home *** CD-ROM | disk | FTP | other *** search
/ C/C++ Users Group Library 1996 July / C-C++ Users Group Library July 1996.iso / vol_100 / 111_01 / mxprint.h < prev    next >
Text File  |  1985-08-19  |  6KB  |  261 lines

  1. /*    EPSON PRINTER CONSTANTS        
  2.  
  3.  
  4.              Author - Joe Shannon
  5.                 566 Rock Road
  6.             State College, PA 16801
  7.                 (814) 238-0029
  8.  
  9.                   Version 1.0
  10.                February 28, 1982
  11.  
  12. **This program is released to public domain with the request that author credit
  13.   be retained in the source.
  14. */
  15.  
  16. #define    PRDATA    0x7C    /* printer data port */
  17. #define    PRSTAT    0x7D    /* printer status port */
  18. #define    PRMASK    1    /* printer ready mask */
  19.  
  20. #define    NUL    0    /* ends TAB ESC B ESC C */
  21. #define    BEL    0x07    /* sounds bell for 1 sec */
  22. #define    BS    0x08    /* backspace */
  23. #define    HT    0x09    /* horizontal tab */
  24. #define    LF    0x0A    /* line feed */
  25. #define    VT    0x0B    /* vertical tab */
  26. #define    FF    0x0C    /* form feed */
  27. #define    CR    0x0D    /* carriage return */
  28. #define    SO    0x0E    /* shift out - large chr. prnt. */
  29. #define    SI    0x0F    /* shift in - condensed chr. prnt. */
  30. #define    DC1    0x11    /* device cntrl 1 - sel print. rdy to rec data */
  31. #define    DC2    0x12    /* device cntrl 2 - condensed chr off */
  32. #define    DC3    0x13    /* device cntrl 3 - desel prt no rdy to rec data */
  33. #define    DC4    0x14    /* device cntrl 4 - large chr off */
  34. #define    ESC    0x1B    /* escape */
  35. #define    ESC0    0x30    /* sets line space to 8 lines p/inch */
  36. #define    ESC2    0x32    /* sets line space to 6 lines p/inch */
  37. #define    ESC8    0x38    /* desel paper end detctor */
  38. #define    ESC9    0x39    /* selects paper end detctor */
  39. #define    ESCA    0x41    /* sets line spc btw 1/72" & 85/72 */
  40. #define    ESCB    0x42    /* sets VT to 8 positions */
  41. #define    ESCC    0x43    /* sets frm lgth to 127 lines or 22" */
  42. #define    ESCD    0x44    /* sets HT up to 12 positions */
  43. #define    ESCE    0x45    /* turn on emphasized chr */
  44. #define    ESCF    0x46    /* turn off emphasized chr */
  45. #define    ESCK    0x4B    /* turn on norm density bit image mode */
  46. #define    ESCL    0x4C    /* turn off dual density bit image mode */
  47. #define    ESCN    0x4E    /* set skip-over perf */
  48. #define    ESCO    0x4F    /* rels skip-over perf */
  49. #define    ESCQ    0x51    /* set column lgth */
  50. #define    ESCR    0x52    /* select international chr set */
  51.  
  52.  
  53.  
  54. /*------------ PRINTER OUTPUT ----------------*/
  55. pntout(BYTE)
  56. char    BYTE;
  57. {    while((inp(PRSTAT) & PRMASK)==0);
  58.     outp(PRDATA,BYTE);
  59.     return;
  60. }
  61.  
  62. /*------------ PRINTER INITIALIZE ------------*/
  63. pntint()
  64. {    prsel();
  65.     prsel();    /* dumb printer sometimes needs 2 */
  66.     colsiz(80);    /* default collumn size */
  67.     tabset(9,17,25,33,41,49,57,65,73,0);    /* set tabs @8 ea. */
  68.     deflin();    /* default line spacing */
  69.     smlcan();
  70.     empcan();
  71.     perfcan();
  72.     pntout(CR);
  73.     return;
  74. }
  75.  
  76. /*------------ ESCAPE SEQUENCE PRINT ---------*/
  77. escpnt(BYTE)
  78. char    BYTE;
  79. {    pntout(ESC);
  80.     pntout(BYTE);
  81.     return;
  82. }
  83.  
  84. /*----------- SET TABS ON PRINTER ------------*/
  85. tabset(T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12)
  86. int    T1,T2,T3,T4,T5,T6,T7,T8,T9,T10,T11,T12;
  87. {    escpnt(ESCD);
  88.     if(T1==NUL)    goto DONE;    pntout(T1);
  89.     if(T2==NUL)    goto DONE;    pntout(T2);
  90.     if(T3==NUL)    goto DONE;    pntout(T3);
  91.     if(T4==NUL)    goto DONE;    pntout(T4);
  92.     if(T5==NUL)    goto DONE;    pntout(T5);
  93.     if(T6==NUL)    goto DONE;    pntout(T6);
  94.     if(T7==NUL)    goto DONE;    pntout(T7);
  95.     if(T8==NUL)    goto DONE;    pntout(T8);
  96.     if(T9==NUL)    goto DONE;    pntout(T9);
  97.     if(T10==NUL)    goto DONE;    pntout(T10);
  98.     if(T11==NUL)    goto DONE;    pntout(T11);
  99.     if(T12==NUL)    goto DONE;    pntout(T12);
  100. DONE:    pntout(NUL);
  101.     return;
  102. }
  103.  
  104. /*----------- SET COLUMN SIZE ON PRINTER -----*/
  105. colsiz(BYTE)
  106. char    BYTE;
  107. {    if((BYTE<1)||(BYTE>233)) return;
  108.     escpnt(ESCQ);
  109.     pntout(BYTE);
  110.     return;
  111. }
  112. /*----------- SET LINE SPACING 1-85 ----------*/
  113. linsiz(BYTE)
  114. char    BYTE;
  115. {    if((BYTE<1)||(BYTE>85)) return;
  116.     escpnt(ESCA);
  117.     pntout(BYTE);
  118.     return;
  119. }
  120.  
  121. /*---------- SET LINE SPACING TO DEFAULT -----*/
  122. deflin()
  123. {    escpnt(ESC2);
  124.     return;
  125. }
  126.  
  127. /*--------- SET LINE SPACING TO 8 LINES/IN. --*/
  128. lin8()
  129. {    escpnt(ESC0);
  130.     return;
  131. }
  132.  
  133. /*--------- SET VERTICAL TABS ----------------*/
  134. vtabs(T1,T2,T3,T4,T5,T6,T7,T8)
  135. char    T1,T2,T3,T4,T5,T6,T7,T8;
  136. {    escpnt(ESCB);
  137.     if(T1==NUL)    goto DONE;    pntout(T1);
  138.     if(T2==NUL)    goto DONE;    pntout(T2);
  139.     if(T3==NUL)    goto DONE;    pntout(T3);
  140.     if(T4==NUL)    goto DONE;    pntout(T4);
  141.     if(T5==NUL)    goto DONE;    pntout(T5);
  142.     if(T6==NUL)    goto DONE;    pntout(T6);
  143.     if(T7==NUL)    goto DONE;    pntout(T7);
  144.     if(T8==NUL)    goto DONE;    pntout(T8);
  145. DONE:    pntout(NUL);
  146.     return;
  147. }
  148.         
  149. /*--------- SET FORM SIZE BY LINE OR LEGNTH --*/
  150. formlin(BYTE)
  151. char    BYTE;
  152. {    if((BYTE<1)||(BYTE>127)) return;
  153.     escpnt(ESCC);
  154.     pntout(BYTE);
  155.     return;
  156. }
  157. formsiz(BYTE)
  158. {    if((BYTE<1)||(BYTE>22)) return;
  159.     escpnt(ESCC);
  160.     pntout(0);
  161.     pntout(BYTE);
  162.     return;
  163. }
  164.  
  165.  
  166. /*------------ SKIP PERFORATION BY LINES -----*/
  167. perfskip(BYTE)
  168. char    BYTE;
  169. {    if((BYTE<1)||(BYTE>127)) return;
  170.     escpnt(ESCN);
  171.     pntout(BYTE);
  172.     return;
  173. }
  174. perfcan()
  175. {    escpnt(ESCO);
  176.     return;
  177. }
  178.  
  179. /*---------- TURN ON LARGE PRINT -------------*/
  180. lrgpnt()
  181. {    pntout(SO);
  182.     return;
  183. }
  184. lrgcan()        /* cancel large print */
  185. {    pntout(DC4);
  186.     return;
  187. }
  188.  
  189. /*---------- TURN ON SMALL PRINT -------------*/
  190. smlpnt()
  191. {    pntout(SI);
  192.     return;
  193. }
  194. smlcan()        /* cancel small print */
  195. {    pntout(DC2);
  196.     return;
  197. }
  198.  
  199. /*----------- TURN ON EMPHASIZED PRINT -------*/
  200. emppnt()
  201. {    escpnt(ESCE);
  202.     return;
  203. }
  204. empcan()        /* cancel empha print */
  205. {    escpnt(ESCF);
  206.     return;
  207. }
  208.  
  209. /*------------ CHANGE CHARACTER SET ----------*/
  210. chgchr(BYTE)
  211. char    BYTE;
  212. {    if((BYTE<1)||(BYTE>7)) return;
  213.     escpnt(ESCR);
  214.     pntout(BYTE);
  215.     return;
  216. }
  217.  
  218. /*------------- PRINTER SELECT (CLR BUFFER)-- */
  219. prsel()
  220. {    pntout(DC1);
  221.     return;
  222. }
  223.  
  224. prdsel()
  225. {    pntout(DC3);      /* deselect printer */
  226.     return;
  227. }
  228.  
  229. /*------------- PAPER END DETECTOR OFF/ON ----*/
  230. pedon()
  231. {    escpnt(ESC9);
  232.     return;
  233. }
  234. pedoff()
  235. {    escpnt(ESC8);
  236.     return;
  237. }
  238.  
  239. /*------------ RING PRINTER BELL --------------*/
  240. prbell()
  241. {    pntout(BEL);
  242.     return;
  243. }
  244.  
  245. /*------------ GRAPHICS MODES -----------------*/
  246. ngraph(NBYTES)
  247. int    NBYTES;
  248. {    escpnt(ESCK);
  249.     pntout(NBYTES);
  250.     pntout(NBYTES>>8);
  251.     return;
  252. }
  253. dgraph(NBYTES)
  254. int    NBYTES;
  255. {    escpnt(ESCL);
  256.     pntout(NBYTES);
  257.     pntout(NBYTES>>8);
  258.     return;
  259. }
  260.  
  261.